
package web.reclamos.dao.sql;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import web.reclamos.beans.Coorporacion;
import web.reclamos.dao.CoorporacionDao;
import web.reclamos.dao.exception.ExceptionReclamos;

public class CoorporacionDaoSql  implements CoorporacionDao{

    public void crear(Coorporacion entidad) throws ExceptionReclamos {
        Connection cn = null;
        PreparedStatement pstm = null;
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "insert into coorporacion (id_coorporacion, nombre_coorporacion, direccion_coorporacion, representante_legal) values (?,?,?,?)";
            pstm = cn.prepareStatement(sql);
            pstm.setInt(1, entidad.getId_coorporacion());
            pstm.setString(2, entidad.getNombre_coorporacion());
            pstm.setString(3, entidad.getDireccion_coorporacion());
            pstm.setString(4, entidad.getRepresentante_legal());
            pstm.executeUpdate();
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
    }

    public void modificar(Coorporacion entidad) {
        Connection cn = null;
        PreparedStatement pstm = null;
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "update coorporacion set nombre_coorporacion = ?, direccion_coorporacion = ?, representante_legal =? where id_coorporacion = ?";
            pstm = cn.prepareStatement(sql);
            pstm.setString(1, entidad.getNombre_coorporacion());
            pstm.setString(2, entidad.getDireccion_coorporacion());
            pstm.setString(3, entidad.getRepresentante_legal());
            pstm.setInt(4, entidad.getId_coorporacion());

            pstm.executeUpdate();
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }

    }

    public void eliminar(int id) {
         Connection cn = null;
        PreparedStatement pstm = null;
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "delete from coorporacion where id_coorporacion = ?";
            pstm = cn.prepareStatement(sql);
            pstm.setInt(1, id);

            pstm.executeUpdate();
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }

    }

    public Coorporacion traerPorId(int id) {
        Connection cn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        Coorporacion coorporacion = new Coorporacion();
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "select * from coorporacion where id_coorporacion = ?";
            pstm = cn.prepareStatement(sql);
            pstm.setInt(1, id);
            rs = pstm.executeQuery();
            while(rs.next()){
                coorporacion.setId_coorporacion(rs.getInt("id_coorporacion"));
                coorporacion.setNombre_coorporacion(rs.getString("nombre_coorporacion"));
                coorporacion.setDireccion_coorporacion(rs.getString("direccion_coorporacion"));
                coorporacion.setRepresentante_legal(rs.getString("representante_legal"));
            }
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(rs);
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
        return coorporacion;
    }

    public List<Coorporacion> traerTodo() {
           Connection cn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<Coorporacion> coorporaciones = new ArrayList<Coorporacion>();
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "select * from coorporacion";
            pstm = cn.prepareStatement(sql);
            rs = pstm.executeQuery();
            while(rs.next()){
                coorporaciones.add(new Coorporacion(rs.getInt("id_coorporacion"),
                                                                    rs.getString("nombre_coorporacion"),
                                                                      rs.getString("direccion_coorporacion"),
                                                                      rs.getString("representante_legal")));
            }
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(rs);
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
        return coorporaciones;
    }

    public List<Coorporacion> traerPorNombre(String nombre) {
        Connection cn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<Coorporacion> coorporaciones = new ArrayList<Coorporacion>();
        try{
            cn = ConexionDB.getInstance().getConnection();
            String sql = "select * from coorporacion where nombre_coorporacion like ?";
            pstm = cn.prepareStatement(sql);
            pstm.setString(1, nombre + "%");
            rs = pstm.executeQuery();
            while(rs.next()){
                coorporaciones.add(new Coorporacion(rs.getInt("id_coorporacion"),
                                                                    rs.getString("nombre_coorporacion"),
                                                                      rs.getString("direccion_coorporacion"),
                                                                      rs.getString("representante_legal")));
            }
        }catch(SQLException ex){
            System.out.println(ex);
        }catch(Exception ex){
              System.out.println(ex);
        }finally{
            ConexionDB.getInstance().close(rs);
            ConexionDB.getInstance().close(pstm);
            ConexionDB.getInstance().close(cn);
        }
        return coorporaciones;
    }

}
